Amazon OpenSearch Serviceを使用してApacheログ分析をしてみた
Amazon OpenSearch Serviceとは?
Amazon OpenSearch Service はAmazon ElasticSearch Service の後継サービスです。Amazon OpenSearch Service は、OpenSearch クラスターのデプロイ、オペレーション、およびスケーリングを容易にするサービスです。OpenSearch は完全なオープンソースの検索および分析エンジンです。
ユースケース:
- ログ分析
- リアルタイムのアプリケーションモニタリング
- クリックストリーム分析
この記事では、Kinesis Firehoseを使用してApacheログをAmazon OpenSearch Serviceに送信し、OpenSearchでこのログを分析してみました。
やってみた
EC2 インスタンスの作成
- この設定でEC2 インスタンスを作成しておきます。
- AMI : Amazon Linux 2 AMI
- インスタンスタイプ : t2.micro
- Security Group :
- Inbound :SSH, HTTP, HTTPS
- EC2 インスタンスに接続して、Apache ウェブサーバーをインストールしておきます。
sudo yum update -y sudo yum install -y httpd sudo systemctl start httpd
- インスタンスのパブリックIPを使用してWebサーバーをテストします。これにより、アクセスログが作成されます。
- Apacheログは /var/log/httpd/ にあります。
Amazon OpenSearch Serviceの作成
- OpenSearchコンソールで、Create domainを選択します。
- ドメイン名を入力して、デプロイタイプでDevelopment and testingを選択しておきます。
- データノードの設定
- インスタンスタイプ : Default (r6g.large.search)
- ノードの数 : 1
- ストレージタイプ : EBS
- EBS ボリュームタイプ : General Purpose SSD
- ネットワークでパブリックアクセスを選択しておきます。
- アクセスポリシーで[ドメインレベルのアクセスポリシーの設定]を選択しておきます。
- タイプ : IPv4 address
- プリンシパル : MyIP address
- アクション : Allow
- これらの設定でDomainを作成しておきます。
Kinesis Data Firehose Delivery Streamの作成
- Kinesis Data Firehoseのコンソールで、Create Delivery Streamを選択します。
- SourceでDirect PUTを選択して、 DestinationでAmazon OpenSearch Serviceを選択して、Deliveryストリーム名入力しておきます。
- Transform recordsでEnableを選択して、[Create function]をクリックして関数を作成します。
- Lambda blueprintsでApache Log to JSONを選択して、関数名とテーブル名を入力して、[Deploy]をクリックしておきます。
- Transform recordsのLambda Functionで上記で作成したLambda関数を選択しておきます。
- Destinationの設定:
- OpenSearch Domain : 前の手順で作成しDomainを選択します。
- Index : Lambda関数テーブル名と同じ名前。
- Index rotation : 毎日
- S3バケットを作成して、バックアップバケットとしてバケットを選択して、Delivery Streamを作成しておきます。
Kinesis Agentをインストールして設定する
- EC2 インスタンスに接続して、次のコマンドを実行してKinesis Agentをインストールしておきます。
sudo yum install –y aws-kinesis-agent
-
エージェントを設定しておきます。
#Open agent.json file using some editor sudo vi /etc/aws-kinesis/agent.json #Add Firehose details in the file { "cloudwatch.emitMetrics": true, "kinesis.endpoint": "", "firehose.endpoint": "firehose.us-east-1.amazonaws.com", # Specify Access KeyId and Secret AccessKey if you get credentials error while running Kinesis agent. #"awsAccessKeyId": "your access key Id", #"awsSecretAccessKey": " your secret access key", "flows": [ { "filePattern": "/var/log/httpd/access_log", "deliveryStream": "your firehose delivery stream name", "initialPosition": "START_OF_FILE" } ] }
- エージェントを開始しておきます。
#start Kinesis agent sudo service aws-kinesis-agent start #You can check Kinesis logs for more details and errors sudo tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log #stop Kinesis agent sudo service aws-kinesis-agent stop #restart Kinesis agent sudo service aws-kinesis-agent restart
- ログファイルがOpenSearchに送信されていることをOpenSearchコンソールでみることができます。
OpenSearchダッシュボードを使用してログを分析および視覚化する
- OpenSearchコンソールでドメインを選択して、OpenSearch Dashboards URLをクリックしておきます。
- Explore on my ownを選択しておきます。
- ホームページでManageをクリックしておきます。
- Create index patternを選択して、インデックスパターン名を入力して、Nextを選択しておきます。
- Time fieldで timestampを選択して、Index patternを作成しておきます。
- Index patternを作成した後、ログのさまざまなフィールドを確認できます。
- メニューで[Discover]を選択して、ログが作成された時間範囲を変更しておきます。
- これで、個々のログとグラフを見ることができます。
- メニューで[Visualize]を選択して、[Create new visualization]を選択しておきます。
- 必要なVisualizationのタイプを選択しておきます。
- フィルタとaxisパラメータを追加して、視覚化グラフをみることができますできます。
まとめ
Kinesis Firehoseを使用してApacheログをAmazon OpenSearch Serviceに送信し、OpenSearchでこのログを分析してみました。さまざまなフィールドとフィルターを使用してデータを視覚化できます。
Reference : Kinesis Agent Configuration